//package cn.snowheart.strategy.spring.context;
//
//import cn.snowheart.strategy.spring.annotation.HandlerType;
//import cn.snowheart.strategy.spring.enums.OrderType;
//import cn.snowheart.strategy.spring.handler.IOrderHandler;
//import org.springframework.beans.BeansException;
//import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
//import org.springframework.stereotype.Component;
//
//import java.util.Collection;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 通过形式实现Context的初始化以及注入
// *
// * @author liuwanxiang
// * @version 2019/06/24
// */
//@Component
//public class HandlerProcessor implements BeanFactoryPostProcessor {
//
//    private static final String PACKAGE_NAME = "cn.snowheart.strategy.spring.handler.impl";
//
//    @Override
//    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
//        Map<OrderType, IOrderHandler> contextMap = new HashMap<>();
//        Map<String, IOrderHandler> map = beanFactory.getBeansOfType(IOrderHandler.class);
//        if (map != null && !map.isEmpty()) {
//            Collection<IOrderHandler> handlers = map.values();
//            for (IOrderHandler handler : handlers) {
//                OrderType handlerType = handler.getClass().getAnnotation(HandlerType.class).value();
//                contextMap.put(handlerType, handler);
//            }
//            HandlerContext context = new HandlerContext(contextMap);
//            beanFactory.registerSingleton(context.getClass().getName(), context);
//        }
//    }
//}
